package com.biboheart.adapter.compiler.lexical;

import com.biboheart.adapter.compiler.enums.TokenState;
import com.biboheart.adapter.compiler.token.Token;

public interface Tokenizer {
    /**
     * 进入分词
     * @param ch 字符
     * @param offset 字符位置
     * @return TRUE:进入分词器,FALSE:未进入分词器
     */
    TokenState entry(char ch, int offset, String content);

    TokenState getState();

    /**
     * 分析
     * @param ch 字符
     * @param offset 字符位置
     * @param content 传入原文，以便预分析
     * @return 5:完成分词, 1:未完成解析, 9:解析失败, -1:error
     */
    TokenState analyse(char ch, int offset, String content);

    Token generateToken();
}
